setInfos(3, "Damian : sissy", "Cyber Master Damian will take care of you - a big 24/7 script including permissions, punishments...", "Indica, Doti", "started", 0xFFFFFF, "en", ["anal", "long", "exhibition", "femaledom", "formale", "humiliation", "urine", "transgender", "options", "spanking", "shopping", "toys", "sperm"]);

// CyberMistress - sissy
//
def errors = 0
def endReached = false
def block = "begin"
if(loadString("cybermistress.wanted_start_block")!=null) {
	block = loadString("cybermistress.wanted_start_block")
	save("cybermistress.wanted_start_block",null)
}
def newBlock = block
while(!endReached && newBlock!=null) {
block = null
switch(newBlock) {
case "begin":
	setImage("jewell/punishments.jpg")
	show("It seems you've been acting insufficiently feminine lately my naughty little sissy. This is unacceptable.")
	wait(6)
	block = "begin2"
	break

case "begin2":
	def messages1 = ["It looks like you need reminding of your position in life, my forgetful little slut. Believe me that it will be a lesson you will not soon forget.","I'm going to have to correct your behavior, my naughty slut. You need to be reminded to act like a proper sissy for me.","Well my little sissy-slut, I'm going to have recondition you the hard way."]
	show(messages1[getRandom(3)])
	wait(8)
	block = "begin3"
	break

case "begin3":
	show("Let's start by getting you dressed like the girly little slut you are. I expect you to keep a proper sissy wardrobe, so you will be punished for each item you do not have.\n\nThe list you may have recorded before will be checked against your responses.")
	showButton("I understand Master")
	block = "dress1"
	break

case "dress1":
	if(getBoolean("Do you have a pair of panties?"))
		block = "panties"
	else
		block = "punpanties"
	break

case "dress2":
	if(getBoolean("Do you have a bra?"))
		block = "bra"
	else
		block = "punbra"
	break

case "dress3":
	if(getBoolean("Do you have make-up?"))
		block = "makeup"
	else
		block = "punmakeup"
	break

case "dress4":
	if(getBoolean("Do you have stockings (or, at least, pantyhose) ?"))
		block = "stockings"
	else
		block = "punstockings"
	break

case "dress5":
	if(getBoolean("Do you have a skirt or dress?"))
		block = "skirt"
	else
		block = "punskirt"
	break

case "panties":
	show("Good. Put them on my adorable sissy. There, doesn't that feel better?")
	if(loadFirstTrue("clothes.panties", "clothes.thong")==null) {
		save("clothes.panties", true)
		errors += 1
	}	
	showButton("Yes Master")
	block = "dress2"
	break

case "punpanties":
	if(loadFirstTrue("clothes.panties", "clothes.thong")!=null) {
		save("clothes.panties", false)
		save("clothes.thong", false)
		errors += 1
	}	
	show("Off to a bad start aren't we my disobediant sissy. If I can't dress it up in panties I'll find another way to make those cheeks pink...")
	wait(12)
	block = "spanking"
	break

case "spanking":
	show("Fetch me your toughest spanking implement and return as fast as you can! Hurry slut!")
	showButton("I'm back Master")
	block = "spanking2"
	break

case "spanking2":
	show("Pull down your pants and lay on your stomach. Place a pillow or something similar under your butt so it is raised in the air for me. You will spank in time with the smacks. Make sure you take FULL swings each time. Alternate cheeks with each swing. \n\nTell me when you are ready.")
	showButton("Ready Master")
	block = "spanking3"
	break

case "spanking3":
	def messages12 = ["Now, spank that ass!","Spank it sissy!"]
	show(messages12[getRandom(2)])
	for(def i=0;i<60;i++) {
		playSound("swat.wav")
		wait(0.2)
	}
	block = "spanking4"
	break

case "spanking4":
	show("There, that will do for now. You'd better go buy some panties for next time if you know what's good for you.")
	wait(8)
	block = "dress2"
	break

case "bra":
	if(!loadBoolean("clothes.bra")) {
		save("clothes.bra", true)
		errors += 1
	}	
	show("Good girl. Put it on for me. There, that's almost perfect. Go find something to stuff it with. We can't have my little sissy walking around with a flat chest.")
	showButton("Finished Master")
	block = "dress3"
	break

case "punbra":
	if(loadBoolean("clothes.bra")) {
		save("clothes.bra", false)
		errors += 1
	}	
	show("What a bad little sissy you are. Your punishment is to put clothespegs or nipple clamps on your nipples instead.")
	wait(20)
	block = "theclamps"
	break

case "theclamps":
	if(getBoolean("You DO at least have those don't you sissy?")) {
		if(loadFirstTrue("toys.clothespins", "toys.nipple_clamps")==null)
			errors += 1
		block = "dress3"
	} else {
		if(loadFirstTrue("toys.clothespins", "toys.nipple_clamps")!=null) {
			save("toys.clothespins", false)
			save("toys.nipple_clamps", false)
			errors += 1
		}
		block = "badsissy"
	}
	break

case "badsissy":
	show("I am very disappointed in you sissy, you can't even be a stupid whore properly. I guess there's nothing left but for you to become an animal.")
	wait(13)
	block = "pet"
	break

case "pet":
	block = "finish"
	return "jewell/petplay"
	break

case "makeup":
	if(!loadBoolean("clothes.make_up")) {
		save("clothes.make_up", true)
		errors += 1
	}	
	show("Good girl! Go put some on. Make sure you whore yourself up good, sissies don't do subtlety.")
	showButton("Finished Master")
	block = "makeup2"
	break

case "makeup2":
	show("Now, I want you to write \"Property of my Master\" across your ass in lipstick. Hop to it sissy.")
	showButton("Finished Master")
	block = "dress4"
	break

case "punmakeup":
	if(loadBoolean("clothes.make_up")) {
		save("clothes.make_up", false)
		errors += 1
	}	
	show("Appalling. How do you expect to be my slave if you don't even have proper make-up?")
	wait(10)
	block = "punmakeup2"
	break

case "punmakeup2":
	show("You're going to have to do this the old fashioned way. Pinch your cheeks until they redden. Make sure they're nice and pink for me. Check the mirror.")
	showButton("Back Master")
	block = "dress4"
	break

case "stockings":
	if(loadFirstTrue("clothes.stockings", "clothes.pantyhose")==null) {
		save("clothes.stockings", true)
		errors += 1
	}	
	show("Such a good slut! Put them on for me. You're starting to look quite the cute little sissy, "+loadString("intro.name")+".")
	showButton("Thank you Master")
	block = "dress5"
	break

case "punstockings":
	if(loadFirstTrue("clothes.stockings", "clothes.pantyhose")!=null) {
		save("clothes.stockings", false)
		save("clothes.pantyhose", false)
		errors += 1
	}	
	show("If you don't have stockings you're going to have to go and shave your legs for me. I'll wait.")
	showButton("Back Master")
	block = "verstockings"
	break

case "verstockings":
	if(getBoolean("Tell me honestly, did you shave your legs like I asked?"))
		block = "dress5"
	else
		block = "badsissy"
	break

case "skirt":
	if(loadFirstTrue("clothes.skirt", "clothes.dress")==null) {
		save("clothes.skirt", true)
		errors += 1
	}	
	show("Excellent slut. Put it on for me. Swirl around so I can see how you look.")
	showButton("Finished Master")
	block = "skirt2"
	break

case "skirt2":
	show("Very cute. What a good little whore you're being.")
	wait(5)
	block = "dressedup"
	break

case "punskirt":
	if(loadFirstTrue("clothes.skirt", "clothes.dress")!=null) {
		save("clothes.skirt", false)
		save("clothes.dress", false)
		errors += 1
	}	
	show("Hmph. It's almost like you're not taking your sissification very seriously.")
	wait(8)
	block = "punskirt2"
	break

case "punskirt2":
	show("Go fetch a towel. Take off your pants and underwear. Now drape the towel around you like you were getting out of the shower. This is now your skirt sissy. Tell me how much you love it.")
	showButton("I love my skirt Master")
	block = "dressedup"
	break

case "dressedup":
	show("There, now you look like the degenerate slut we both know you are. You love being dressed like a girl, don't you sissy?")
	wait(12)
	block = "love"
	break

case "love":
	if(getBoolean("Don't you love being dressed like a girl?"))
		block = "action"
	else
		block = "hategirl"
	break

case "hategirl":
	show("I don't like being lied to sissy. We both know you love being a girly slut.")
	wait(10)
	block = "badsissy"
	break

case "action":
	show("Now how shall I have my sissified slut degrade herself today?")
	wait(6)
	switch(getRandom(5)) {
	case 0: block = "actions1"; break
	case 1: block = "actions2"; break
	case 2: block = "actions3"; break
	case 3: block = "actions4"; break
	case 4: block = "actions5"; break
	}
	break

case "actions1":
	show("Pick three songs sung by women. I want you to dance like a slut to all three of them. Make sure to swing your hips and wiggle your chest like a proper girl. I want to see your butt bouncing!")
	if(showButton("Finished Master")<300) {
		show("Are you kinding me ? You're going to be punished")
		showButton("Sorry, Master")
		save("jewell/punishment", 5)
		return "jewell/punishments"
	}		
	block = "done"
	break

case "actions2":
	show("Alright my little sissy maid, I want you to clean the room you're in. Make sure it is spotless, I have very exacting standards.")
	if(showButton("Finished Master")<120) {
		show("Are you kinding me ? You're going to be punished")
		showButton("Sorry, Master")
		save("jewell/punishment", 5)
		return "jewell/punishments"
	}		
	block = "done"
	break

case "actions3":
	if(getBoolean("Do you have a dildo or butt plug?"))
		block = "buttfuck"
	else
		block = "badsissy"
	break

case "buttfuck":
	if(loadFirstTrue("toys.buttplug", "toys.dildo")==null) {
		error+=1
	} 
	if(loadFirstTrue("toys.dildo", "toys.buttplug")=="toys.buttplug") 
		show("Shove a plug up your ass. Get ready for a good buttfucking my little sissy.")
	else
		show("Shove a dildo up your ass. Get ready for a good buttfucking my little sissy.")
	showButton("Ready Master")
	block = "buttfuck2"
	break

case "buttfuck2":
	show("Fuck yourself until I say you can stop.")
	wait(60+getRandom(120))
	block = "buttfuck3"
	break

case "buttfuck3":
	show("Alright my darling ass-slave you may stop. Remember, all sissies get buttfucked often.")
	showButton("Thank you Master")
	block = "done"
	break

case "actions4":
	show("Start stroking your little sissy clit. Make it hard for me.")
	showButton("I am hard Master")
	block = "tease"
	break

case "tease":
	show("Hands off! Don't touch your cock until I say so.")
	wait(20+getRandom(40))
	switch(getRandom(3)) {
	case 0: block = "tease"; break
	case 1: block = "tease2"; break
	case 2: block = "tease3"; break
	}
	break

case "tease2":
	show("Alright sissy, stroke that pathetic dicklet as fast as you can! Don't dare cum!")
	wait(15+getRandom(45))
	switch(getRandom(4)) {
	case 0: block = "tease"; break
	case 1: block = "tease2"; break
	case 2: block = "tease3"; break
	case 3: block = "tease4"; break
	}
	break

case "tease3":
	show("Stroke your dickie very slowly sissy. Slow and steady, but don't you cum!")
	wait(15+getRandom(35))
	switch(getRandom(4)) {
	case 0: block = "tease"; break
	case 1: block = "tease2"; break
	case 2: block = "tease3"; break
	case 3: block = "tease4"; break
	}
	break

case "tease4":
	show("Okay sissy put that pathetic little clit of yours away.")
	showButton("Finished Master")
	block = "done"
	break

case "actions5":
	show("Come to think of it, I don't need you right now sissy. Go stand in the corner with your eyes downcast. I'll ring for you when you can come back.")
	showButton("Yes Master")
	block = "corner"
	break

case "corner":
	show("Go! You should be in the corner sissy!")
	wait(120+getRandom(240))
	block = "done"
	break

case "done":
	show("There we are my little slut, don't you feel so much more girly now?")
	wait(8)
	block = "done2"
	break

case "done2":
	if(getBoolean("Well, don't you feel like a girl now sissy?"))
		block = "done3"
	else
		block = "badsissy"
	break

case "done3":
	if(errors>0) {
		show("But your clothes or toys table was incorrect "+errors+" times. Bad sissy, it should be always up to date !")
		wait(5)
		if(errors>2) {
			show("Many errors : you're going to be punished now")
			wait(5)			
			save("cybermistress.punishment",Math.min(errors,7))
			return "jewell/punishment"
		}
	}
	else {
		if(loadInteger("cybermistress.points")==null)
			save("cybermistress.points", 80)
		save("cybermistress.points", +3+loadInteger("cybermistress.points"))
		show("Good. Let's keep it that way.\n(You've got "+loadInteger("cybermistress.points")+" points)")
		save("jewell.levelonesissy", true)
	}
	wait(6)
	block = "finish"
	break

case "finish":
	endReached = true
	break

default:
	show("Unfinished ? ("+block+")")
	endReached = true
} // end switch 
newBlock = block
} // end while

// This script, from http://ss.deviatenow.com, is protected by this licence : 
// CC by-NC, see http://creativecommons.org/licenses/by-nc/3.0/
